package Veterinaria.negocio;

import java.util.Collection;

import Veterinaria.dao.PacienteDAO;
import Veterinaria.dao.PersonaDAO;
import Veterinaria.excepcion.CodigoDuplicadoExcepcion;
import Veterinaria.excepcion.DAOExcepcion;
import Veterinaria.excepcion.ValidaNombreExcepcion;
import Veterinaria.modelo.Dueno;
import Veterinaria.modelo.Paciente;
import Veterinaria.modelo.Persona;

public class GestionPaciente {
	public Collection<Paciente> buscarPorNombre(String nombre)
			throws DAOExcepcion {
		PacienteDAO dao = new PacienteDAO();
		return dao.buscarPorNombre(nombre);
	}

	public Paciente insertar(String codigo_paciente, String codigo_persona,
			String nombre, String raza, String genero, String tiposangre,
			String tamano, String actividad, String peso, String esteril,
			String fecnac, String notas, String imagen, String estado)
			throws DAOExcepcion, CodigoDuplicadoExcepcion, ValidaNombreExcepcion {
		PacienteDAO dao = new PacienteDAO();

		Paciente vo = new Paciente();
		GestionPersona dueno = new GestionPersona();
		Dueno persona = dueno.obtenerDueno(codigo_persona);
//
		vo.setCodigo_paciente(codigo_paciente);
		vo.setoDueno(persona);
		vo.setNombre_paciente(nombre);
		vo.setRaza(raza);
		vo.setGenero(genero);
		vo.setTipo_sangre(tiposangre);
		vo.setTamano(tamano);
		vo.setActividad(actividad);
		vo.setPeso(peso);
		vo.setEsteril(esteril);
		vo.setFec_nacimiento(fecnac);
		vo.setNotas(notas);
		vo.setImagen_paciente(imagen);
		vo.setEstado(estado);

		return dao.insertar(vo);
	}

	public Paciente obtener(String idPaciente) throws DAOExcepcion {
		PacienteDAO dao = new PacienteDAO();
		return dao.obtener(idPaciente);
	}

	public void eliminar(String idPaciente) throws DAOExcepcion {
		PacienteDAO dao = new PacienteDAO();
		dao.eliminar(idPaciente);
	}

	public Paciente actualizar(String codigo_paciente,
			String nombre, String raza, String genero, String tiposangre,
			String tamano, String actividad, String peso, String esteril,
			String fecnac, String notas, String imagen, String estado)
			throws DAOExcepcion {
		PacienteDAO dao = new PacienteDAO();

		Paciente vo = new Paciente();
		vo.setCodigo_paciente(codigo_paciente);
		// vo.setoDueno(oDueno)
		// vo.setoDueno().setCodigo_persona(codigo_persona);
		vo.setNombre_paciente(nombre);
		vo.setRaza(raza);
		vo.setGenero(genero);
		vo.setTipo_sangre(tiposangre);
		vo.setTamano(tamano);
		vo.setActividad(actividad);
		vo.setPeso(peso);
		vo.setEsteril(esteril);
		vo.setFec_nacimiento(fecnac);
		vo.setNotas(notas);
		vo.setImagen_paciente(imagen);
		vo.setEstado(estado);

		return dao.actualizar(vo);
	}

	public Collection<Paciente> listar() throws DAOExcepcion {
		PacienteDAO dao = new PacienteDAO();
		return dao.listar();
	}

	public Paciente GenerarCodigo() throws DAOExcepcion {
		PacienteDAO dao = new PacienteDAO();
		return dao.GenerarCodigo();
	}
	
	public Collection<Paciente> obtenerPorNombreRaza(String nombre, String raza, String estado) throws DAOExcepcion {
		PacienteDAO dao = new PacienteDAO();
		return dao.obtenerPorNombreRaza(nombre, raza, estado);
	}
	
	public Collection<Paciente> PacientesxDueno(String codigo)
			throws DAOExcepcion {
		PacienteDAO dao = new PacienteDAO();
		return dao.PacientesxDueno(codigo);
	}
	
}
